<template>
  <div class="Rank">
    <ScreenTitle v-model:title-value="titleValue"></ScreenTitle>
    <div class="charts" ref="charts"></div>
  </div>
</template>

<script lang="ts" setup name="Rank">
import { onMounted, ref, inject } from 'vue'
const charts = ref()

let titleValue = ref('热门商品排行')

const initEchartsOneFn = () => {
  // echarts初始化
  const Echarts = inject('$echarts')

  let myChart = (Echarts as any).init(charts.value)
  // 或
  // let myChart = proxy.$echarts.init(container.value);
  const option = {
    //标题组件
    title: {
      text: '商品排行',
      link: 'http://www.baidu.com',
      subtext: '各大商品排行',
      left: '80%',
      textStyle: {
        color: '#5edc63'
      },
      subtextStyle: {
        color: '#5edc63'
      }
    },
    //x|y轴组件
    xAxis: {
      type: 'category', //图形图标在x轴均匀分布展示
      data: ['不列颠', '法兰西', '德意志', '大清', '西班牙', '俄罗斯']
    },
    grid: {
      left: 30,
      bottom: 20,
      right: 10
    },
    yAxis: {
      type: 'value',
      min: 0,
      max: 100
    },
    //系列:决定你展示什么样的图形图标
    series: [
      {
        type: 'bar',
        data: [20, 30, 40, 50, 60, 70],
        label: {
          show: true,
          //文字的位置
          position: 'insideTop',
          //文字颜色
          color: '#fff'
        },
        barWidth: '25',
        itemStyle: {
          //柱子样式,,颜色,柱子样式
          color: function (data: any) {
            //给每一个柱条这是背景颜色
            let arr = ['red', 'orange', 'yellowgreen', 'green', 'purple', 'hotpink', 'skyblue']
            return arr[data.dataIndex]
          },
          borderRadius: [10, 10, 0, 0]
        }, //是否显示背景颜色
        showBackground: true,
        backgroundStyle: {
          //底部背景的颜色
          color: {
            type: 'linear',
            x: 0,
            y: 0,
            x2: 0,
            y2: 1,
            colorStops: [
              {
                offset: 0,
                color: 'black' // 0% 处的颜色
              },
              {
                offset: 1,
                color: 'blue' // 100% 处的颜色
              }
            ],
            global: false // 缺省为 false
          }
        }
      },
      {
        type: 'line',
        data: [10, 20, 30, 40, 50, 90],
        smooth: true //平滑曲线
      },
      {
        type: 'bar',
        data: [20, 30, 40, 50, 60, 70],
        label: {
          show: true,
          //文字的位置
          position: 'insideTop',
          //文字颜色
          color: '#fff'
        },
        barWidth: '25',
        itemStyle: {
          //柱子样式,,颜色,柱子样式
          color: function (data: any) {
            //给每一个柱条这是背景颜色
            let arr = ['red', 'orange', 'yellowgreen', 'green', 'purple', 'hotpink', 'skyblue']
            return arr[data.dataIndex]
          },
          borderRadius: [10, 10, 0, 0]
        }, //是否显示背景颜色
        showBackground: true,
        backgroundStyle: {
          //底部背景的颜色
          color: {
            type: 'linear',
            x: 0,
            y: 0,
            x2: 0,
            y2: 1,
            colorStops: [
              {
                offset: 0,
                color: 'black' // 0% 处的颜色
              },
              {
                offset: 1,
                color: 'blue' // 100% 处的颜色
              }
            ],
            global: false // 缺省为 false
          }
        }
      }
    ],
    tooltip: {
      backgroundColor: 'rgba(50,50,50,0.7)'
    }
  }

  myChart.setOption(option)
}
onMounted(() => {
  initEchartsOneFn()
})
</script>

<style scoped>
.Rank {
  width: 100%;
  height: 100%;
  margin: 20px 0px;

  background: url(../../images/dataScreen-main-cb.png) no-repeat;
  background-size: 100% 100%;
  .charts {
    margin-top: 10px;
    height: calc(100% - 50px);
  }
}
</style>
